//引入文件模块
const fs = require("fs");

// 01.引入express模块
const express = require("express");

// 02.创建一个express对象
const app = express();

// 用于接收post请求发送过来的数据（post的请求体）
app.use(express.json());
app.use(express.urlencoded({ extended: true }));

//app.get() 只能接收get请求
//app.post() 只能接收post请求
//app.all() 可以接收任何请求
app.all("/getStus", (request, response) => {
  //设置允许跨域请求
  response.setHeader("Access-Control-Allow-Origin", "*");
  //响应头  *表示所有类型的头信息都可以接受
  response.setHeader("Access-Control-Allow-Headers", "*");
  //request.query 表示获取get请求的url地址里面的参数
  let { grade } = request.query;
  //读取文件中的数据，并转为字符串类型
  let data = fs.readFileSync("./data/stus.txt").toString();
  let str = "[" + data.substring(0, data.length - 3) + "]";
  let stus = JSON.parse(str);
  if (grade) {
    stus = stus.filter((s) => s.grade === grade);
  }
  //将数据响应给客户端
  response.send(stus);
});

app.all("/addStu", (request, response) => {
  //设置允许跨域请求
  response.setHeader("Access-Control-Allow-Origin", "*");
  //响应头  *表示所有类型的头信息都可以接受
  response.setHeader("Access-Control-Allow-Headers", "*");
  //request.body 表示获取post请求的请求体里面的数据
  let { no, name, age, gender, grade } = request.body;
  if (no) {
    //将学生信息组织成一个字符串
    let str = `{"no":"${no}","name":"${name}","age":"${age}","gender":"${gender}","grade":"${grade}"},\r\n`;
    //将学生信息，写到文件中
    fs.writeFile("./data/stus.txt", str, { flag: "a" }, function (err) {
      if (!err) {
        response.send("ok");
      } else {
        response.send("err");
      }
    });
  }else{
    response.end();
  }
});

//04.监听开启的服务
app.listen(4000, () => {
  console.log("服务已经启动，端口号是：4000");
});
